package com.jdk.demo.fileChannel;

import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

// 将位置设置为大于文件当前大小的值是合法的，但这不会更改文件的大小，试图在这样的位置读取字节将立即返回已到达文件末尾的标示，试图在这种位置写入字节将导致文件扩大
// 以容纳新的字节，在以前文件末尾和新写入字节之间的字节值是未指定的
public class PositionDemo {
	
	public static void main(String[] args) throws Exception {
		RandomAccessFile file = new RandomAccessFile("i.txt", "rw");
		FileChannel fileChannel = file.getChannel();
		System.out.println("A position=" + fileChannel.position() + " size=" + fileChannel.size());
		
		System.out.println(fileChannel.read(ByteBuffer.allocate(10), 10000));
		fileChannel.position(9);
		System.out.println("B position=" + fileChannel.position() + " size=" + fileChannel.size());
		
		fileChannel.write(ByteBuffer.wrap("z".getBytes()));
		System.out.println("C position=" + fileChannel.position() + " size=" + fileChannel.size());
		
		fileChannel.close();
	}

}
